package Metronome;

import Adapter.Adapteur;


/**
 * Interface qui s'occupe de la liaison entre le moteur et l'IHM
 *
 */
public interface Controler extends Observer{
	
	/**
	 * Marque le temps
	 */
	void marquerTemps();
	
	/**
	 * Marque la mesure
	 */
	void marquerMesure();

	/**
	 * Demarre le metronome
	 */
	void start();
	
	/**
	 * Arrete le metronome
	 */
	void stop();
	
	/**
	 * Augmente la valeur de la mesure de 1 ( entre 2 et 7 )
	 */
	void increment();

	/**
	 * Diminue la valeur de la mesure de 1 ( entre 2 et 7 )
	 */
	void decrement();
	
	/**
	 * Modifie le moteur
	 * @param moteur
	 */
	void setMoteur(MoteurMetronome moteur);
	
	/**
	 * Recupere le moteur
	 * @return moteur
	 */
	MoteurMetronome getMoteur();

	/**
	 * recupere l'adapteur
	 * @return adapteur
	 */
	Adapteur getAdapteur();
	
	/**
	 * modifie l'adapteur
	 * @param adapteur
	 */
	void setAdapteur(Adapteur adapteur);
	
	/**
	 * Emet un son
	 */
	void emettreClic();

	/**
	 * Met a jour la molette
	 */
	void updateMolette(); 
}
